<html>
    <head>
        <title>额外属性</title>
    </head>
    <body>
        <script>
            /*
                        一、额外属性系统

                                额外属性是一种在实体上存储一些额外数据而不改变它的方法。

                                实体应该实现IHasExtraProperties接口来开启额外属性功能。

                                预构建模块中定义的所有聚合根实体都实现了IHasExtraProperties接口，因此你可以在这些对象上存储额外的属性。

                                eg:

                                    // 设置一个额外属性

                                            var user = await _identityUserRepository.GetAsync(userId);
                                            user.SetProperty("Title", "My custom title value!");
                                            await _identityUserRepository.UpdateAsync(user);

                                    // 获取一个额外属性

                                            var user = await _identityUserRepository.GetAsync(userId);
                                            return user.GetProperty<string>("Title");

                                这种方法非常易于使用并且开箱即用。不需要额外的代码。

                                你可以通过使用不同的属性名称（如此处的Title）同时存储多个属性。

                                额外的属性在EF Core的数据库中存储为单个JSON格式的字符串值。（对于MongoDB，它们存储为文档的单独字段。）

                                有关额外属性系统的更多信息，请参阅实体文档。 https://abp.io/docs/latest/framework/architecture/domain-driven-design/entities

                                备注：

                                    可以根据额外属性的值执行业务逻辑。你可以覆盖服务方法，然后获取或设置如上所示的值。
                    */

        </script>
    </body>
</html>